Large, commercial computer systems (sometimes called data centers) typically have many types of data storage devices. Such data storage devices include solid state disks (RAM disks), cheap and slow magnetic disks, expensive and fast magnetic disks, striped disks, shadowed disks, optical disks, tape drives, and so on.
Data centers with a large variety of storage devices require sophisticated methods for managing storage. In addition, users and application developers are required to make intelligent decisions about where to place their files. In other words, they must decide which type of storage is best suited for the files they create.
Many storage management systems are built on top of the file systems and operating systems employed by the computer system. In many cases, the storage management systems define or support a particular storage model and use the underlying file system as a storage server that simply puts specified files on specified devices.
For example, in current UNIX.TM. based systems, each file system is associated with a single disk (or logical volume). If an application program needs to create a file on a particular type of disk (e.g., a shadow set), then it must choose the appropriate file system. In fact, the name assigned to the file by the application implies which disk the file is allocated on.
The present invention is an improvement on prior art file systems, adding to the file system the capability of performing some storage management functions on its own, as well as interacting with storage management software. Using the concept of dividing the available data storage devices into "service classes", the present invention provides a general mechanism for allocating data storage space for newly created files (as well as for subsequent updates or additions thereto) based on a specified service class, thereby avoiding the need for users and application programs to select and specify the particular data storage device on which each new file is to be stored.